package org.code.mallspringboot.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.code.mallspringboot.dto.PmsEchoDto;
import org.code.mallspringboot.pojo.PmsProduct;
import org.code.mallspringboot.pojo.PmsSkuStock;

import java.util.List;

@Mapper
public interface PmsProductMapper {

    /**
     查询 + 分页
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<PmsProduct> selectPage(@Param("pageNum") int pageNum,@Param("pageSize") int pageSize,
                                @Param("keyword") String keyword,@Param("publishStatus") Integer publishStatus,
                                @Param("verifyStatus") Integer verifyStatus,@Param("productSn") String productSn,
                                @Param("productCategoryId") Integer productCategoryId,@Param("brandId") Integer brandId);

    /**
     总条数
     * @return
     */
    int total(@Param("keyword") String keyword,@Param("publishStatus") Integer publishStatus,
              @Param("verifyStatus") Integer verifyStatus,@Param("productSn") String productSn,
              @Param("productCategoryId") Integer productCategoryId,@Param("brandId") Integer brandId);

    /**
     修改上下架
     * @param id
     * @param publishStatus
     * @return
     */
    int update_publishStatus(@Param("id") int id,@Param("publishStatus") int publishStatus);

    /**
     修改新品
     * @param id
     * @param newStatus
     * @return
     */
    int update_newStatus(@Param("id") int id,@Param("newStatus") int newStatus);

    /**
     修改推荐
     * @param id
     * @param recommendStatus
     * @return
     */
    int update_recommendStatus(@Param("id") int id,@Param("recommendStatus") int recommendStatus);

    /**
     查询SKU库存
     * @param id
     * @param keyword
     * @return
     */
    List<PmsSkuStock> selectByIdAndKeyword(@Param("id") int id,@Param("keyword") String keyword);

    /**
     商品列表删除
     * @param id
     * @param deleteStatus
     * @return
     */
    int deleteStatus(@Param("id") int id,@Param("deleteStatus") int deleteStatus);

    /**
     SKU修改
     * @param productId
     * @param skuCode
     * @param price
     * @param stock
     * @param lowStock
     * @return
     */
    int update(@Param("productId") int productId,@Param("skuCode") String skuCode,
               @Param("price") double price,@Param("stock") Integer stock,@Param("lowStock") Integer lowStock);

    /**
     根据id查所有
     * @param id
     * @return
     */
    PmsEchoDto selectPmsProduct(@Param("id") int id);

    /**
     修改提交
     * @param pmsEchoDto
     * @return
     */
    int update_submit(PmsEchoDto pmsEchoDto);

    /**
     添加
     * @param pmsEchoDto
     * @return
     */
    int add(PmsEchoDto pmsEchoDto);
}
